// 管理 SPU 模块下的接口
import request from '@/utils/request'
// 引入定义的接口 ts 类型
import type {
  HasSpuResponseData,
  AllTradeMark,
  SpuHasImg,
  SaleAttrResponseData,
  HasSaleAttrResponseData,
  SpuData,
  SkuData,
  SkuInfo,
} from '@/api/product/spu/type'
// 枚举接口
enum API {
  //获取已有的SPU的数据
  HASSPU_URL = '/admin/product/',
  //获取全部品牌的数据
  ALLTRADEMARK_URL = '/admin/product/baseTrademark/getTrademarkList',
  //获取某个SPU下的全部的售卖商品的图片数据
  IMAGE_URL = '/admin/product/spuImageList/',
  //获取某一个SPU下全部的已有的销售属性接口地址
  SPUHASSALEATTR_URL = '/admin/product/spuSaleAttrList/',
  //获取整个项目全部的销售属性[颜色、版本、尺码]
  ALLSALEATTR_URL = '/admin/product/baseSaleAttrList',
  // 新增 spu
  ADDSPU_URL = '/admin/product/saveSpuInfo',
  // 更新已有的 spu
  UPDATASPU_URL = '/admin/product/updateSpuInfo',
  // 追加一个新的 sku
  ADDSKU_URL = '/admin/product/saveSkuInfo',
  // 展示已有的sku列表数据
  SKUINFO_URL = '/admin/product/getSkuInfo/',
}

//获取某一个三级分类下已有的SPU数据
export const reqHasSpu = (
  page: number,
  limit: number,
  category3Id: number | string,
) =>
  request.get<any, HasSpuResponseData>(
    API.HASSPU_URL + `${page}/${limit}?category3Id=${category3Id}`,
  )

// 获取全部的SPU的品牌的数据
export const reqAllTradeMark = () =>
  request.get<any, AllTradeMark>(API.ALLTRADEMARK_URL)

// 获取某一个已有的SPU下全部商品的图片地址
export const reqSpuImageList = (spuId: number) =>
  request.get<any, SpuHasImg>(API.IMAGE_URL + spuId)

// 获取某一个已有的SPU拥有多少个销售属性
export const reqSpuHasSaleAttr = (spuId: number) =>
  request.get<any, SaleAttrResponseData>(API.SPUHASSALEATTR_URL + spuId)

// 获取全部的销售属性
export const reqAllSaleAttr = () =>
  request.get<any, HasSaleAttrResponseData>(API.ALLSALEATTR_URL)

// 新增或修改
export const reqAddOrUpdateSpu = (data: SpuData) => {
  // 携带 ID 更新
  if (data.id) {
    return request.post<any, any>(API.UPDATASPU_URL, data)
  } else {
    return request.post<any, any>(API.ADDSPU_URL, data)
  }
}

// 追加一个新的 sku
export const reqAddSku = (data: SkuData) =>
  request.post<any, any>(API.ADDSKU_URL, data)

// 展示已有的sku列表数据
export const reqSkuInfo = (spuId: number | string) =>
  request.get<any, SkuInfo>(API.SKUINFO_URL + spuId)
